package com.nuoniu.sibanyun.service.finance;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.dto.AccountingAuxiliaryLedgerDto;
import com.nuoniu.sibanyun.entity.erp.ErpAccounting;
import com.nuoniu.sibanyun.entity.finance.VAccountingAuxiliaryLedger;
import com.nuoniu.sibanyun.entity.finance.VAccountingSearchProgramme;
import com.nuoniu.sibanyun.entity.finance.VAccountingVoucherDetail;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 辅助总账表 服务类
 * </p>
 *
 * @author 小啊刚
 * @since 2021-04-25
 */
public interface IVAccountingAuxiliaryLedgerService extends IService<VAccountingAuxiliaryLedger> {

    /**
     * 设置辅助总账期初
     * @author 小啊刚
     * @date 2021-05-08
     */
    Map<String, Object> saveLedger(List<VAccountingAuxiliaryLedger> auxiliaryLedger);

    /**
     * 辅助记账
     * @author 小啊刚
     * @date 2021-05-14
     */
    void bookAccounting(VAccountingVoucherDetail voucherDetail, ErpAccounting accounting,  Integer accountPeriod);

    /**
     * 获取客户辅助总账余额
     * @author 小啊刚
     * @date 2021-05-15
     */
    Page<VAccountingAuxiliaryLedger> pageCrmAccountingAuxiliaryLedger(Page page, VAccountingSearchProgramme searchProgramme);

    /**
     * 获取供应商辅助总账余额
     * @author 小啊刚
     * @date 2021-05-17
     */
    Page<VAccountingAuxiliaryLedger> pageVendorAccountingAuxiliaryLedger(Page page, VAccountingSearchProgramme searchProgramme);

    /**
     * 获取个人辅助总账余额
     * @author 小啊刚
     * @date 2021-05-17
     */
    Page<VAccountingAuxiliaryLedger> pageUserAccountingAuxiliaryLedger(Page page, VAccountingSearchProgramme searchProgramme);

    /**
     * 获取辅助期初
     * @author 小啊刚
     * @date 2021-05-17
     */
    Page<VAccountingAuxiliaryLedger> pageAuxiliaryBeginList(Page page, VAccountingSearchProgramme searchProgramme);

    /**
     * 获取科目期初
     * @author 小啊刚
     * @date 2021-05-17
     */
    Integer getAccountingBegin(Integer accountingId);

    /**
     * 获取辅助科目余额明细
     * @author 小啊刚
     * @date 2021-05-19
     */
    Page<VAccountingAuxiliaryLedger> pageAccountingAuxiliaryLedgerList(Page page, VAccountingSearchProgramme searchProgramme);

    /**
     * 项目辅助总账余额
     * @author 小啊刚
     * @date 2022-05-18
     */
    Page<VAccountingAuxiliaryLedger> pageProjectAccountingAuxiliaryLedger(Page page, VAccountingSearchProgramme searchProgramme);

    /**
     * 部门总账余额
     * @author 小啊刚
     * @date 2022-05-18
     */
    Page<VAccountingAuxiliaryLedger> pageOfficeAccountingAuxiliaryLedger(Page page, VAccountingSearchProgramme searchProgramme);

    /**
     * 辅助明细账
     * @author 小啊刚
     * @date 2022-05-19
     */
    List<AccountingAuxiliaryLedgerDto> pageAccountingAuxiliaryDetailList(VAccountingSearchProgramme searchProgramme, Boolean isShowDetail, Boolean isDayBook);
}
